package com.mzj.saas.mservice.house.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.haixiaoke.saas.repository.pojo.HousingAllocation;
import com.mzj.saas.mservice.property.entity.CommunityHouseUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 公租房VO
 */
@Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
public class HouseVO {
    private String id; //
    @ApiModelProperty("产权单位id")
    private Long orgId; //产权单位id
    @ApiModelProperty("产权单位名称")
    private String orgName; //产权单位名称
    @ApiModelProperty("省")
    private Long provinceId; //省
    @ApiModelProperty("省名称")
    private String province; //省名称
    @ApiModelProperty("市")
    private Long cityId; //市
    @ApiModelProperty("市名称")
    private String city; //市名称
    @ApiModelProperty("区")
    private Long districtId; //区
    @ApiModelProperty("区名称")
    private String district; //区名称
    @ApiModelProperty("街道")
    private Long streetId; //街道
    @ApiModelProperty("街道名称")
    private String street; //街道名称
    @ApiModelProperty("社区")
    private Long communityId; //社区
    @ApiModelProperty("社区名称")
    private String community; //社区名称
    @ApiModelProperty("地址")
    private String address; //地址
    @ApiModelProperty("小区id")
    private String residenceCommunityId; //小区id
    @ApiModelProperty("小区名称")
    private String residenceCommunityName; //小区名称
    @ApiModelProperty("楼栋id")
    private Long buildingNum; //楼栋id
    @ApiModelProperty("楼栋")
    private String buildingNumName; //楼栋
    @ApiModelProperty("单元id")
    private Long unit; //单元id
    @ApiModelProperty("单元")
    private String unitName; //单元
    @ApiModelProperty("房号")
    private String roomNumber; //房号
    @ApiModelProperty("楼层")
    private Integer floor; //楼层
    @ApiModelProperty("面积")
    private BigDecimal area; //面积
    @ApiModelProperty("室")
    private Integer room; //室
    @ApiModelProperty("厅")
    private Integer hall; //厅
    @ApiModelProperty("卫")
    private Integer toilet; //卫
    @ApiModelProperty("房产性质:1.自住房、2.出租房、3.保障性住房")
    private Integer houseNature; //房产性质:1.自住房、2.出租房、3.保障性住房
    @ApiModelProperty("所属物业id")
    private Long housePropertyId; //所属物业id
    @ApiModelProperty("所属物业名称")
    private String houseProperty; //所属物业名称
    @ApiModelProperty("房源审核状态:0未审核 1已审核")
    private Integer auditStatus; //房源审核状态:0未审核 1已审核
    @ApiModelProperty("产权人绑定状态:0未绑定 1绑定")
    private Integer bindStatus; //产权人绑定状态:0未绑定 1绑定
    @ApiModelProperty("装修类型：0毛坯 1简装 2精装(带家具） 3豪装(带家具)")
    private Integer decorateType; //装修类型：0毛坯 1简装 2精装(带家具） 3豪装(带家具)
    @ApiModelProperty("配租状态：0未配租 1可配租 2已配租")
    private Integer matchStatus; //配租状态：0未配租 1可配租 2已配租
    @ApiModelProperty("出租状态：0未出租 1已出租")
    private Integer leaseStatus; //出租状态：0未出租 1已出租
    @ApiModelProperty("出租状态类型")
    private String lease;//出租状态类型
    @ApiModelProperty("合同状态：0未签订 1已签订")
    private Integer contractStatus; //合同状态：0未签订 1已签订

    private Integer paymentStatus; //
    @ApiModelProperty("备案状态：0未备案 1已备案")
    private Integer recordStatus; //备案状态：0未备案 1已备案
    @ApiModelProperty("密码锁授权：0未授权 1已授权 4已冻结")
    private Integer pwdLockStatus; //密码锁授权：0未授权 1已授权 4已冻结
    @ApiModelProperty("核查状态：0未核查、1已核查")
    private Integer checkStatus; //核查状态：0未核查、1已核查

    private String contractNumber; //
    @ApiModelProperty("录入人id")
    private String operationId; //录入人id
    private String createTime;
    @ApiModelProperty("配租按钮状态：0不显示，1显示")
    private Integer rentStatus;//配租按钮状态：0不显示，1显示
    @ApiModelProperty("审核标识：0不可审核，1可审核")
    private Integer auditFlag;//审核标识：0不可审核，1可审核
    @ApiModelProperty("承租人")
    private List<String> matchUser;//承租人
    @ApiModelProperty("产权归属类型：1产权单位  2个人")
    private Integer ownerType; //产权归属类型：1产权单位  2个人
    @ApiModelProperty("产权所有人姓名")
    private String  ownerName; //产权所有人姓名
    @ApiModelProperty("产权所有人电话")
    private String  ownerMobile;  //产权所有人电话
    @ApiModelProperty("产权所有人id ：根据电话号码匹配用户")
    private String  ownerUserId; //产权所有人id ：根据电话号码匹配用户

    @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8")
    @ApiModelProperty("收费开始日期")
    private Date startTime; //收费开始日期
    @ApiModelProperty("水表号")
    private String  waterMeter; //水表号
    @ApiModelProperty("电表号")
    private String  electricMeter; //电表号
    @ApiModelProperty("燃气表号")
    private String  gasMeter; //燃气表号
    @ApiModelProperty("状态：1正常 2已删除")
    private Integer  status; //状态：1正常 2已删除
    @ApiModelProperty("搜索关键字字段")
    private String search; //搜索关键字字段【小区、楼栋、单元、房号】
    @ApiModelProperty("户型")
    private String houseType; //户型 【导出临时字段】
    @ApiModelProperty("性质名称:1公租房、2保障房、3出租房、4自用房、5单位宿舍")
    private String houseNatureName; //性质名称 【导出临时字段】 性质:1公租房、2保障房、3出租房、4自用房、5单位宿舍
    @ApiModelProperty("楼宇类型")
    private Integer buildType; //楼宇类型【导出临时字段】
    @ApiModelProperty("楼宇类型名称")
    private String buildTypeName; //楼宇类型名称【导出临时字段】
    @ApiModelProperty("楼栋层数")
    private Integer houseNumber; // 楼栋层数
    @ApiModelProperty("收费开始日期")
    private String chargeStartTime; // 收费开始日期【导出临时字段】
    @ApiModelProperty("退租状态 0无 1已申请 2已验房 3未结清 4已结清 6已完成")
    private Integer withDraw; //退租状态 0无 1已申请 2已验房 3未结清 4已结清 6已完成
    @ApiModelProperty("退租表id")
    private Long withDrawId; // 退租表id

    @ApiModelProperty("房屋管理员")
    private String houseManager;//房屋管理员
    @ApiModelProperty("配租方式：1单承租人  2多承租人  默认为空")
    private Integer matchType; // 配租方式：1单承租人  2多承租人  默认为空
    @ApiModelProperty("合租房屋Id")
    private String housemateId;//合租房屋Id

    /**
     * 公寓配置状态 1已设置 2未设置
     */
    private Integer apartmentSetState;
    /**
     * 公寓配置信息
     */
    private HousingAllocation housingAllocation;
    /**
     * 小区建设时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date buildTime;

    List<CommunityHouseUser> communityHouseUsers;

    private String housePath;

    /**
     * 统一信用代码
     */
    private String socialCreditNumber;

    /**
     * 账户可用余额
     */
    private BigDecimal balanceFee;

    /**
     * 房产余额id
     */
    private Long remainingId;

    /**
     * 缴费金额
     */
    private BigDecimal paymentAmount;

    /**
     * 已扣缴金额
     */
    private BigDecimal amountPaid;

}
